home *** CD-ROM | disk | FTP | other *** search
/ Aminet 45 / Aminet 45 (2001)(GTI - Schatztruhe)[!][Oct 2001].iso / Aminet / game / misc / IChing.lha / IChing / IChingReq.c < prev    next >
C/C++ Source or Header  |  2001-07-16  |  30KB  |  1,094 lines

  1. /****h* IChing/IChingReq.c [2.0] **************************************
  2. *
  3. * NAME
  4. *    IChingReq.c
  5. *
  6. * NOTES
  7. *    GUI Designed by : Jim Steichen
  8. *    $VER: IChingReq.c 2.0 (13-Jul-2001) by J.T. Steichen
  9. ***********************************************************************
  10. *
  11. */
  12.  
  13. #include <stdio.h>
  14. #include <string.h>
  15.  
  16. #include <exec/types.h>
  17.  
  18. #include <AmigaDOSErrs.h>
  19.  
  20. #include <intuition/intuition.h>
  21. #include <intuition/classes.h>
  22. #include <intuition/classusr.h>
  23. #include <intuition/gadgetclass.h>
  24.  
  25. #include <libraries/gadtools.h>
  26.  
  27. #include <graphics/displayinfo.h>
  28. #include <graphics/gfxbase.h>
  29.  
  30. #include <clib/exec_protos.h>
  31. #include <clib/intuition_protos.h>
  32. #include <clib/gadtools_protos.h>
  33. #include <clib/graphics_protos.h>
  34. #include <clib/utility_protos.h>
  35. #include <clib/diskfont_protos.h>
  36.  
  37. #include "CPGM:GlobalObjects/CommonFuncs.h"
  38.  
  39.  
  40. #define L1Zero    0
  41. #define L1One     1
  42. #define L1Two     2
  43. #define L1Three   3
  44. #define L2Zero    4
  45. #define L2One     5
  46. #define L2Two     6
  47. #define L2Three   7
  48. #define L3Zero    8
  49. #define L3One     9
  50. #define L3Two     10
  51. #define L3Three   11
  52. #define L4Zero    12
  53. #define L4One     13
  54. #define L4Two     14
  55. #define L4Three   15
  56. #define L5Zero    16
  57. #define L5One     17
  58. #define L5Two     18
  59. #define L5Three   19
  60. #define L6Zero    20
  61. #define L6One     21
  62. #define L6Two     22
  63. #define L6Three   23
  64. #define ResetBt   24
  65. #define DoneBt    25
  66.  
  67. #define ICR_CNT   26
  68.  
  69. // ------------------------------------------------------------------
  70.  
  71. IMPORT struct IntuitionBase *IntuitionBase;
  72. IMPORT struct GfxBase       *GfxBase;
  73. IMPORT struct Library       *GadToolsBase;
  74.  
  75. IMPORT struct Screen   *Scr;
  76. IMPORT UBYTE           *PubScreenName;
  77. IMPORT APTR             VisualInfo;
  78.  
  79. IMPORT struct TextAttr *Font;
  80. IMPORT struct CompFont  CFont;
  81.  
  82. // ------------------------------------------------------------------
  83.  
  84. PRIVATE struct Window       *ICRWnd = NULL;
  85. PRIVATE struct Gadget       *ICRGList = NULL;
  86. PRIVATE struct Gadget       *ICRGadgets[ ICR_CNT ];
  87.  
  88. PRIVATE struct IntuiMessage  ICRMsg;
  89.  
  90. PRIVATE UWORD  ICRLeft   = 155;
  91. PRIVATE UWORD  ICRTop    = 15;
  92. PRIVATE UWORD  ICRWidth  = 330;
  93. PRIVATE UWORD  ICRHeight = 340;
  94. PRIVATE UBYTE *ICRWdt    = "IChing ©1992-2001 by J.T. Steichen:";
  95.  
  96. PRIVATE struct TextFont *ICRFont = NULL;
  97.  
  98. #define ICR_TNUM 7
  99.  
  100. PRIVATE struct IntuiText ICRIText[ ICR_TNUM ] = {
  101.  
  102.    2, 0, JAM1, 179,  9, NULL, (UBYTE *)"Enter # of heads per toss:", NULL,
  103.  
  104.    2, 0, JAM1, 50,  49, NULL, (UBYTE *)"Line 1:", NULL,
  105.    2, 0, JAM1, 50,  97, NULL, (UBYTE *)"Line 2:", NULL,
  106.    2, 0, JAM1, 50, 147, NULL, (UBYTE *)"Line 3:", NULL,
  107.    2, 0, JAM1, 50, 196, NULL, (UBYTE *)"Line 4:", NULL,
  108.    2, 0, JAM1, 50, 245, NULL, (UBYTE *)"Line 5:", NULL,
  109.    2, 0, JAM1, 50, 294, NULL, (UBYTE *)"Line 6:", NULL 
  110. };
  111.  
  112.  
  113. PRIVATE UWORD ICRGTypes[] = {
  114.  
  115.    CHECKBOX_KIND,   CHECKBOX_KIND,   CHECKBOX_KIND,
  116.    CHECKBOX_KIND,   CHECKBOX_KIND,   CHECKBOX_KIND,
  117.    CHECKBOX_KIND,   CHECKBOX_KIND,   CHECKBOX_KIND,
  118.    CHECKBOX_KIND,   CHECKBOX_KIND,   CHECKBOX_KIND,
  119.    CHECKBOX_KIND,   CHECKBOX_KIND,   CHECKBOX_KIND,
  120.    CHECKBOX_KIND,   CHECKBOX_KIND,   CHECKBOX_KIND,
  121.    CHECKBOX_KIND,   CHECKBOX_KIND,   CHECKBOX_KIND,
  122.    CHECKBOX_KIND,   CHECKBOX_KIND,   CHECKBOX_KIND,
  123.  
  124.    BUTTON_KIND,     BUTTON_KIND
  125. };
  126.  
  127. PRIVATE int L1ZeroClicked(  void );
  128. PRIVATE int L1OneClicked(   void );
  129. PRIVATE int L1TwoClicked(   void );
  130. PRIVATE int L1ThreeClicked( void );
  131. PRIVATE int L2ZeroClicked(  void );
  132. PRIVATE int L2OneClicked(   void );
  133. PRIVATE int L2TwoClicked(   void );
  134. PRIVATE int L2ThreeClicked( void );
  135. PRIVATE int L3ZeroClicked(  void );
  136. PRIVATE int L3OneClicked(   void );
  137. PRIVATE int L3TwoClicked(   void );
  138. PRIVATE int L3ThreeClicked( void );
  139. PRIVATE int L4ZeroClicked(  void );
  140. PRIVATE int L4OneClicked(   void );
  141. PRIVATE int L4TwoClicked(   void );
  142. PRIVATE int L4ThreeClicked( void );
  143. PRIVATE int L5ZeroClicked(  void );
  144. PRIVATE int L5OneClicked(   void );
  145. PRIVATE int L5TwoClicked(   void );
  146. PRIVATE int L5ThreeClicked( void );
  147. PRIVATE int L6ZeroClicked(  void );
  148. PRIVATE int L6OneClicked(   void );
  149. PRIVATE int L6TwoClicked(   void );
  150. PRIVATE int L6ThreeClicked( void );
  151. PRIVATE int ResetBtClicked( void );
  152. PRIVATE int DoneBtClicked(  void );
  153.  
  154. PRIVATE struct NewGadget ICRNGad[] = {
  155.  
  156.     82,  43, 26, 11, (UBYTE *) "0:", NULL, L1Zero,  PLACETEXT_ABOVE, NULL,
  157.    (APTR) L1ZeroClicked,
  158.    113,  43, 26, 11, (UBYTE *) "1:", NULL, L1One,   PLACETEXT_ABOVE, NULL,
  159.    (APTR) L1OneClicked,
  160.    146,  43, 26, 11, (UBYTE *) "2:", NULL, L1Two,   PLACETEXT_ABOVE, NULL,
  161.    (APTR) L1TwoClicked,
  162.    177,  43, 26, 11, (UBYTE *) "3:", NULL, L1Three, PLACETEXT_ABOVE, NULL,
  163.    (APTR) L1ThreeClicked,
  164.  
  165.     82,  92, 26, 11, (UBYTE *) "0:", NULL, L2Zero,  PLACETEXT_ABOVE, NULL,
  166.    (APTR) L2ZeroClicked,
  167.    113,  92, 26, 11, (UBYTE *) "1:", NULL, L2One,   PLACETEXT_ABOVE, NULL,
  168.    (APTR) L2OneClicked,
  169.    145,  92, 26, 11, (UBYTE *) "2:", NULL, L2Two,   PLACETEXT_ABOVE, NULL,
  170.    (APTR) L2TwoClicked,
  171.    177,  92, 26, 11, (UBYTE *) "3:", NULL, L2Three, PLACETEXT_ABOVE, NULL, 
  172.    (APTR) L2ThreeClicked,
  173.    
  174.     82, 141, 26, 11, (UBYTE *) "0:", NULL, L3Zero,  PLACETEXT_ABOVE, NULL, 
  175.    (APTR) L3ZeroClicked,
  176.    113, 141, 26, 11, (UBYTE *) "1:", NULL, L3One,   PLACETEXT_ABOVE, NULL, 
  177.    (APTR) L3OneClicked,
  178.    145, 141, 26, 11, (UBYTE *) "2:", NULL, L3Two,   PLACETEXT_ABOVE, NULL, 
  179.    (APTR) L3TwoClicked,
  180.    177, 141, 26, 11, (UBYTE *) "3:", NULL, L3Three, PLACETEXT_ABOVE, NULL, 
  181.    (APTR) L3ThreeClicked,
  182.    
  183.     82, 190, 26, 11, (UBYTE *) "0:", NULL, L4Zero,  PLACETEXT_ABOVE, NULL, 
  184.    (APTR) L4ZeroClicked,
  185.    113, 190, 26, 11, (UBYTE *) "1:", NULL, L4One,   PLACETEXT_ABOVE, NULL, 
  186.    (APTR) L4OneClicked,
  187.    145, 190, 26, 11, (UBYTE *) "2:", NULL, L4Two,   PLACETEXT_ABOVE, NULL, 
  188.    (APTR) L4TwoClicked,
  189.    177, 190, 26, 11, (UBYTE *) "3:", NULL, L4Three, PLACETEXT_ABOVE, NULL, 
  190.    (APTR) L4ThreeClicked,
  191.    
  192.     82, 239, 26, 11, (UBYTE *) "0:", NULL, L5Zero,  PLACETEXT_ABOVE, NULL, 
  193.    (APTR) L5ZeroClicked,
  194.    113, 239, 26, 11, (UBYTE *) "1:", NULL, L5One,   PLACETEXT_ABOVE, NULL, 
  195.    (APTR) L5OneClicked,
  196.    145, 239, 26, 11, (UBYTE *) "2:", NULL, L5Two,   PLACETEXT_ABOVE, NULL, 
  197.    (APTR) L5TwoClicked,
  198.    177, 239, 26, 11, (UBYTE *) "3:", NULL, L5Three, PLACETEXT_ABOVE, NULL, 
  199.    (APTR) L5ThreeClicked,
  200.    
  201.     82, 288, 26, 11, (UBYTE *) "0:", NULL, L6Zero,  PLACETEXT_ABOVE, NULL, 
  202.    (APTR) L6ZeroClicked,
  203.    113, 288, 26, 11, (UBYTE *) "1:", NULL, L6One,   PLACETEXT_ABOVE, NULL, 
  204.    (APTR) L6OneClicked,
  205.    145, 288, 26, 11, (UBYTE *) "2:", NULL, L6Two,   PLACETEXT_ABOVE, NULL, 
  206.    (APTR) L6TwoClicked,
  207.    177, 288, 26, 11, (UBYTE *) "3:", NULL, L6Three, PLACETEXT_ABOVE, NULL, 
  208.    (APTR) L6ThreeClicked,
  209.  
  210.     16, 319, 65, 18, (UBYTE *) "_RESET", NULL, ResetBt, PLACETEXT_IN, NULL,
  211.    (APTR) ResetBtClicked,
  212.  
  213.    240, 319, 65, 18, (UBYTE *) "_DONE!", NULL, DoneBt,  PLACETEXT_IN, NULL,
  214.    (APTR) DoneBtClicked
  215. };
  216.  
  217. PRIVATE ULONG ICRGTags[] = {
  218.  
  219.    (TAG_DONE),   (TAG_DONE),   (TAG_DONE),   (TAG_DONE),
  220.    (TAG_DONE),   (TAG_DONE),   (TAG_DONE),   (TAG_DONE),
  221.    (TAG_DONE),   (TAG_DONE),   (TAG_DONE),   (TAG_DONE),
  222.    (TAG_DONE),   (TAG_DONE),   (TAG_DONE),   (TAG_DONE),
  223.    (TAG_DONE),   (TAG_DONE),   (TAG_DONE),   (TAG_DONE),
  224.    (TAG_DONE),   (TAG_DONE),   (TAG_DONE),   (TAG_DONE),
  225.  
  226.    (GT_Underscore), '_', (TAG_DONE),
  227.    (GT_Underscore), '_', (TAG_DONE)
  228. };
  229.  
  230. // --------------------------------------------------------------------
  231.  
  232. PRIVATE void CloseICRWindow( void )
  233. {
  234.    if (ICRWnd) 
  235.       {
  236.       CloseWindow( ICRWnd );
  237.       ICRWnd = NULL;
  238.       }
  239.  
  240.    if (ICRGList) 
  241.       {
  242.       FreeGadgets( ICRGList );
  243.       ICRGList = NULL;
  244.       }
  245.  
  246.    if (ICRFont) 
  247.       {
  248.       CloseFont( ICRFont );
  249.       ICRFont = NULL;
  250.       }
  251.  
  252.    return;
  253. }
  254.  
  255. // --------------------------------------------------------------------
  256.  
  257. PRIVATE int LineValues[6] = { 0, };
  258.  
  259. PRIVATE void Convert_To_Type( int line, int *type )
  260. {
  261.    if (line == 1 || line >= 3)
  262.       *type = 0;
  263.    else if (line <= 0 || line == 2)
  264.       *type = 1;
  265.  
  266.    return;
  267. }
  268.  
  269. PRIVATE int DoneBtClicked( void )
  270. {
  271.    IMPORT int line_type1[], line_type2[];
  272.    int i;
  273.    
  274.    for (i = 0; i < 6; i++)    
  275.       {
  276.       Convert_To_Type( LineValues[i], &line_type1[i] );
  277.   
  278.       if (LineValues[i] == 3)  
  279.          LineValues[i] = 0;
  280.       else if (LineValues[i] == 0)  
  281.          LineValues[i] = 3;
  282.  
  283.       Convert_To_Type( LineValues[i], &line_type2[i] );
  284.       }
  285.  
  286.    CloseICRWindow();
  287.  
  288.    return( FALSE );
  289. }
  290.  
  291. // --------------------------------------------------------------------
  292.     
  293. PRIVATE int L1ZeroClicked( void )
  294. {
  295.    GT_SetGadgetAttrs( ICRGadgets[ L1One ], ICRWnd, NULL,
  296.                       GTCB_Checked, FALSE, TAG_DONE
  297.                     );
  298.  
  299.    GT_SetGadgetAttrs( ICRGadgets[ L1Two ], ICRWnd, NULL,
  300.                       GTCB_Checked, FALSE, TAG_DONE
  301.                     );
  302.  
  303.    GT_SetGadgetAttrs( ICRGadgets[ L1Three ], ICRWnd, NULL,
  304.                       GTCB_Checked, FALSE, TAG_DONE
  305.                     );
  306.    
  307.    LineValues[0] = 0;
  308.  
  309.    return( TRUE );   
  310. }
  311.  
  312. PRIVATE int L1OneClicked( void )
  313. {
  314.    GT_SetGadgetAttrs( ICRGadgets[ L1Zero ], ICRWnd, NULL,
  315.                       GTCB_Checked, FALSE, TAG_DONE
  316.                     );
  317.  
  318.    GT_SetGadgetAttrs( ICRGadgets[ L1Two ], ICRWnd, NULL,
  319.                       GTCB_Checked, FALSE, TAG_DONE
  320.                     );
  321.  
  322.    GT_SetGadgetAttrs( ICRGadgets[ L1Three ], ICRWnd, NULL,
  323.                       GTCB_Checked, FALSE, TAG_DONE
  324.                     );
  325.    
  326.    LineValues[0] = 1;
  327.  
  328.    return( TRUE );   
  329. }
  330.  
  331. PRIVATE int L1TwoClicked( void )
  332. {
  333.    GT_SetGadgetAttrs( ICRGadgets[ L1One ], ICRWnd, NULL,
  334.                       GTCB_Checked, FALSE, TAG_DONE
  335.                     );
  336.  
  337.    GT_SetGadgetAttrs( ICRGadgets[ L1Zero ], ICRWnd, NULL,
  338.                       GTCB_Checked, FALSE, TAG_DONE
  339.                     );
  340.  
  341.    GT_SetGadgetAttrs( ICRGadgets[ L1Three ], ICRWnd, NULL,
  342.                       GTCB_Checked, FALSE, TAG_DONE
  343.                     );
  344.    
  345.    LineValues[0] = 2;
  346.  
  347.    return( TRUE );   
  348. }
  349.  
  350. PRIVATE int L1ThreeClicked( void )
  351. {
  352.    GT_SetGadgetAttrs( ICRGadgets[ L1One ], ICRWnd, NULL,
  353.                       GTCB_Checked, FALSE, TAG_DONE
  354.                     );
  355.  
  356.    GT_SetGadgetAttrs( ICRGadgets[ L1Two ], ICRWnd, NULL,
  357.                       GTCB_Checked, FALSE, TAG_DONE
  358.                     );
  359.  
  360.    GT_SetGadgetAttrs( ICRGadgets[ L1Zero ], ICRWnd, NULL,
  361.                       GTCB_Checked, FALSE, TAG_DONE
  362.                     );
  363.    
  364.    LineValues[0] = 3;
  365.  
  366.    return( TRUE );   
  367. }
  368.  
  369. PRIVATE int L2ZeroClicked( void )
  370. {
  371.    GT_SetGadgetAttrs( ICRGadgets[ L2One ], ICRWnd, NULL,
  372.                       GTCB_Checked, FALSE, TAG_DONE
  373.                     );
  374.  
  375.    GT_SetGadgetAttrs( ICRGadgets[ L2Two ], ICRWnd, NULL,
  376.                       GTCB_Checked, FALSE, TAG_DONE
  377.                     );
  378.  
  379.    GT_SetGadgetAttrs( ICRGadgets[ L2Three ], ICRWnd, NULL,
  380.                       GTCB_Checked, FALSE, TAG_DONE
  381.                     );
  382.    
  383.    LineValues[1] = 0;
  384.  
  385.    return( TRUE );   
  386. }
  387.  
  388. PRIVATE int L2OneClicked( void )
  389. {
  390.    GT_SetGadgetAttrs( ICRGadgets[ L2Zero ], ICRWnd, NULL,
  391.                       GTCB_Checked, FALSE, TAG_DONE
  392.                     );
  393.  
  394.    GT_SetGadgetAttrs( ICRGadgets[ L2Two ], ICRWnd, NULL,
  395.                       GTCB_Checked, FALSE, TAG_DONE
  396.                     );
  397.  
  398.    GT_SetGadgetAttrs( ICRGadgets[ L2Three ], ICRWnd, NULL,
  399.                       GTCB_Checked, FALSE, TAG_DONE
  400.                     );
  401.    
  402.    LineValues[1] = 1;
  403.  
  404.    return( TRUE );   
  405. }
  406.  
  407. PRIVATE int L2TwoClicked( void )
  408. {
  409.    GT_SetGadgetAttrs( ICRGadgets[ L2One ], ICRWnd, NULL,
  410.                       GTCB_Checked, FALSE, TAG_DONE
  411.                     );
  412.  
  413.    GT_SetGadgetAttrs( ICRGadgets[ L2Zero ], ICRWnd, NULL,
  414.                       GTCB_Checked, FALSE, TAG_DONE
  415.                     );
  416.  
  417.    GT_SetGadgetAttrs( ICRGadgets[ L2Three ], ICRWnd, NULL,
  418.                       GTCB_Checked, FALSE, TAG_DONE
  419.                     );
  420.    
  421.    LineValues[1] = 2;
  422.  
  423.    return( TRUE );   
  424. }
  425.  
  426. PRIVATE int L2ThreeClicked( void )
  427. {
  428.    GT_SetGadgetAttrs( ICRGadgets[ L2One ], ICRWnd, NULL,
  429.                       GTCB_Checked, FALSE, TAG_DONE
  430.                     );
  431.  
  432.    GT_SetGadgetAttrs( ICRGadgets[ L2Two ], ICRWnd, NULL,
  433.                       GTCB_Checked, FALSE, TAG_DONE
  434.                     );
  435.  
  436.    GT_SetGadgetAttrs( ICRGadgets[ L2Zero ], ICRWnd, NULL,
  437.                       GTCB_Checked, FALSE, TAG_DONE
  438.                     );
  439.    
  440.    LineValues[1] = 3;
  441.  
  442.    return( TRUE );   
  443. }
  444.  
  445. PRIVATE int L3ZeroClicked( void )
  446. {
  447.    GT_SetGadgetAttrs( ICRGadgets[ L3One ], ICRWnd, NULL,
  448.                       GTCB_Checked, FALSE, TAG_DONE
  449.                     );
  450.  
  451.    GT_SetGadgetAttrs( ICRGadgets[ L3Two ], ICRWnd, NULL,
  452.                       GTCB_Checked, FALSE, TAG_DONE
  453.                     );
  454.  
  455.    GT_SetGadgetAttrs( ICRGadgets[ L3Three ], ICRWnd, NULL,
  456.                       GTCB_Checked, FALSE, TAG_DONE
  457.                     );
  458.    
  459.    LineValues[2] = 0;
  460.  
  461.    return( TRUE );   
  462. }
  463.  
  464. PRIVATE int L3OneClicked( void )
  465. {
  466.    GT_SetGadgetAttrs( ICRGadgets[ L3Zero ], ICRWnd, NULL,
  467.                       GTCB_Checked, FALSE, TAG_DONE
  468.                     );
  469.  
  470.    GT_SetGadgetAttrs( ICRGadgets[ L3Two ], ICRWnd, NULL,
  471.                       GTCB_Checked, FALSE, TAG_DONE
  472.                     );
  473.  
  474.    GT_SetGadgetAttrs( ICRGadgets[ L3Three ], ICRWnd, NULL,
  475.                       GTCB_Checked, FALSE, TAG_DONE
  476.                     );
  477.    
  478.    LineValues[2] = 1;
  479.  
  480.    return( TRUE );   
  481. }
  482.  
  483. PRIVATE int L3TwoClicked( void )
  484. {
  485.    GT_SetGadgetAttrs( ICRGadgets[ L3One ], ICRWnd, NULL,
  486.                       GTCB_Checked, FALSE, TAG_DONE
  487.                     );
  488.  
  489.    GT_SetGadgetAttrs( ICRGadgets[ L3Zero ], ICRWnd, NULL,
  490.                       GTCB_Checked, FALSE, TAG_DONE
  491.                     );
  492.  
  493.    GT_SetGadgetAttrs( ICRGadgets[ L3Three ], ICRWnd, NULL,
  494.                       GTCB_Checked, FALSE, TAG_DONE
  495.                     );
  496.    
  497.    LineValues[2] = 2;
  498.  
  499.    return( TRUE );   
  500. }
  501.  
  502. PRIVATE int L3ThreeClicked( void )
  503. {
  504.    GT_SetGadgetAttrs( ICRGadgets[ L3One ], ICRWnd, NULL,
  505.                       GTCB_Checked, FALSE, TAG_DONE
  506.                     );
  507.  
  508.    GT_SetGadgetAttrs( ICRGadgets[ L3Two ], ICRWnd, NULL,
  509.                       GTCB_Checked, FALSE, TAG_DONE
  510.                     );
  511.  
  512.    GT_SetGadgetAttrs( ICRGadgets[ L3Zero ], ICRWnd, NULL,
  513.                       GTCB_Checked, FALSE, TAG_DONE
  514.                     );
  515.    
  516.    LineValues[2] = 3;
  517.  
  518.    return( TRUE );   
  519. }
  520.  
  521. PRIVATE int L4ZeroClicked( void )
  522. {
  523.    GT_SetGadgetAttrs( ICRGadgets[ L4One ], ICRWnd, NULL,
  524.                       GTCB_Checked, FALSE, TAG_DONE
  525.                     );
  526.  
  527.    GT_SetGadgetAttrs( ICRGadgets[ L4Two ], ICRWnd, NULL,
  528.                       GTCB_Checked, FALSE, TAG_DONE
  529.                     );
  530.  
  531.    GT_SetGadgetAttrs( ICRGadgets[ L4Three ], ICRWnd, NULL,
  532.                       GTCB_Checked, FALSE, TAG_DONE
  533.                     );
  534.    
  535.    LineValues[3] = 0;
  536.  
  537.    return( TRUE );   
  538. }
  539.  
  540. PRIVATE int L4OneClicked( void )
  541. {
  542.    GT_SetGadgetAttrs( ICRGadgets[ L4Zero ], ICRWnd, NULL,
  543.                       GTCB_Checked, FALSE, TAG_DONE
  544.                     );
  545.  
  546.    GT_SetGadgetAttrs( ICRGadgets[ L4Two ], ICRWnd, NULL,
  547.                       GTCB_Checked, FALSE, TAG_DONE
  548.                     );
  549.  
  550.    GT_SetGadgetAttrs( ICRGadgets[ L4Three ], ICRWnd, NULL,
  551.                       GTCB_Checked, FALSE, TAG_DONE
  552.                     );
  553.    
  554.    LineValues[3] = 1;
  555.  
  556.    return( TRUE );   
  557. }
  558.  
  559. PRIVATE int L4TwoClicked( void )
  560. {
  561.    GT_SetGadgetAttrs( ICRGadgets[ L4One ], ICRWnd, NULL,
  562.                       GTCB_Checked, FALSE, TAG_DONE
  563.                     );
  564.  
  565.    GT_SetGadgetAttrs( ICRGadgets[ L4Zero ], ICRWnd, NULL,
  566.                       GTCB_Checked, FALSE, TAG_DONE
  567.                     );
  568.  
  569.    GT_SetGadgetAttrs( ICRGadgets[ L4Three ], ICRWnd, NULL,
  570.                       GTCB_Checked, FALSE, TAG_DONE
  571.                     );
  572.    
  573.    LineValues[3] = 2;
  574.  
  575.    return( TRUE );   
  576. }
  577.  
  578. PRIVATE int L4ThreeClicked( void )
  579. {
  580.    GT_SetGadgetAttrs( ICRGadgets[ L4One ], ICRWnd, NULL,
  581.                       GTCB_Checked, FALSE, TAG_DONE
  582.                     );
  583.  
  584.    GT_SetGadgetAttrs( ICRGadgets[ L4Two ], ICRWnd, NULL,
  585.                       GTCB_Checked, FALSE, TAG_DONE
  586.                     );
  587.  
  588.    GT_SetGadgetAttrs( ICRGadgets[ L4Zero ], ICRWnd, NULL,
  589.                       GTCB_Checked, FALSE, TAG_DONE
  590.                     );
  591.    
  592.    LineValues[3] = 3;
  593.  
  594.    return( TRUE );   
  595. }
  596.  
  597. PRIVATE int L5ZeroClicked( void )
  598. {
  599.    GT_SetGadgetAttrs( ICRGadgets[ L5One ], ICRWnd, NULL,
  600.                       GTCB_Checked, FALSE, TAG_DONE
  601.                     );
  602.  
  603.    GT_SetGadgetAttrs( ICRGadgets[ L5Two ], ICRWnd, NULL,
  604.                       GTCB_Checked, FALSE, TAG_DONE
  605.                     );
  606.  
  607.    GT_SetGadgetAttrs( ICRGadgets[ L5Three ], ICRWnd, NULL,
  608.                       GTCB_Checked, FALSE, TAG_DONE
  609.                     );
  610.    
  611.    LineValues[4] = 0;
  612.  
  613.    return( TRUE );   
  614. }
  615.  
  616. PRIVATE int L5OneClicked( void )
  617. {
  618.    GT_SetGadgetAttrs( ICRGadgets[ L5Zero ], ICRWnd, NULL,
  619.                       GTCB_Checked, FALSE, TAG_DONE
  620.                     );
  621.  
  622.    GT_SetGadgetAttrs( ICRGadgets[ L5Two ], ICRWnd, NULL,
  623.                       GTCB_Checked, FALSE, TAG_DONE
  624.                     );
  625.  
  626.    GT_SetGadgetAttrs( ICRGadgets[ L5Three ], ICRWnd, NULL,
  627.                       GTCB_Checked, FALSE, TAG_DONE
  628.                     );
  629.    
  630.    LineValues[4] = 1;
  631.  
  632.    return( TRUE );   
  633. }
  634.  
  635. PRIVATE int L5TwoClicked( void )
  636. {
  637.    GT_SetGadgetAttrs( ICRGadgets[ L5One ], ICRWnd, NULL,
  638.                       GTCB_Checked, FALSE, TAG_DONE
  639.                     );
  640.  
  641.    GT_SetGadgetAttrs( ICRGadgets[ L5Zero ], ICRWnd, NULL,
  642.                       GTCB_Checked, FALSE, TAG_DONE
  643.                     );
  644.  
  645.    GT_SetGadgetAttrs( ICRGadgets[ L5Three ], ICRWnd, NULL,
  646.                       GTCB_Checked, FALSE, TAG_DONE
  647.                     );
  648.    
  649.    LineValues[4] = 2;
  650.  
  651.    return( TRUE );   
  652. }
  653.  
  654. PRIVATE int L5ThreeClicked( void )
  655. {
  656.    GT_SetGadgetAttrs( ICRGadgets[ L5One ], ICRWnd, NULL,
  657.                       GTCB_Checked, FALSE, TAG_DONE
  658.                     );
  659.  
  660.    GT_SetGadgetAttrs( ICRGadgets[ L5Two ], ICRWnd, NULL,
  661.                       GTCB_Checked, FALSE, TAG_DONE
  662.                     );
  663.  
  664.    GT_SetGadgetAttrs( ICRGadgets[ L5Zero ], ICRWnd, NULL,
  665.                       GTCB_Checked, FALSE, TAG_DONE
  666.                     );
  667.    
  668.    LineValues[4] = 3;
  669.  
  670.    return( TRUE );   
  671. }
  672.  
  673. PRIVATE int L6ZeroClicked( void )
  674. {
  675.    GT_SetGadgetAttrs( ICRGadgets[ L6One ], ICRWnd, NULL,
  676.                       GTCB_Checked, FALSE, TAG_DONE
  677.                     );
  678.  
  679.    GT_SetGadgetAttrs( ICRGadgets[ L6Two ], ICRWnd, NULL,
  680.                       GTCB_Checked, FALSE, TAG_DONE
  681.                     );
  682.  
  683.    GT_SetGadgetAttrs( ICRGadgets[ L6Three ], ICRWnd, NULL,
  684.                       GTCB_Checked, FALSE, TAG_DONE
  685.                     );
  686.    
  687.    LineValues[5] = 0;
  688.  
  689.    return( TRUE );   
  690. }
  691.  
  692. PRIVATE int L6OneClicked( void )
  693. {
  694.    GT_SetGadgetAttrs( ICRGadgets[ L6Zero ], ICRWnd, NULL,
  695.                       GTCB_Checked, FALSE, TAG_DONE
  696.                     );
  697.  
  698.    GT_SetGadgetAttrs( ICRGadgets[ L6Two ], ICRWnd, NULL,
  699.                       GTCB_Checked, FALSE, TAG_DONE
  700.                     );
  701.  
  702.    GT_SetGadgetAttrs( ICRGadgets[ L6Three ], ICRWnd, NULL,
  703.                       GTCB_Checked, FALSE, TAG_DONE
  704.                     );
  705.    
  706.    LineValues[5] = 1;
  707.  
  708.    return( TRUE );   
  709. }
  710.  
  711. PRIVATE int L6TwoClicked( void )
  712. {
  713.    GT_SetGadgetAttrs( ICRGadgets[ L6One ], ICRWnd, NULL,
  714.                       GTCB_Checked, FALSE, TAG_DONE
  715.                     );
  716.  
  717.    GT_SetGadgetAttrs( ICRGadgets[ L6Zero ], ICRWnd, NULL,
  718.                       GTCB_Checked, FALSE, TAG_DONE
  719.                     );
  720.  
  721.    GT_SetGadgetAttrs( ICRGadgets[ L6Three ], ICRWnd, NULL,
  722.                       GTCB_Checked, FALSE, TAG_DONE
  723.                     );
  724.    
  725.    LineValues[5] = 2;
  726.  
  727.    return( TRUE );   
  728. }
  729.  
  730. PRIVATE int L6ThreeClicked( void )
  731. {
  732.    GT_SetGadgetAttrs( ICRGadgets[ L6One ], ICRWnd, NULL,
  733.                       GTCB_Checked, FALSE, TAG_DONE
  734.                     );
  735.  
  736.    GT_SetGadgetAttrs( ICRGadgets[ L6Two ], ICRWnd, NULL,
  737.                       GTCB_Checked, FALSE, TAG_DONE
  738.                     );
  739.  
  740.    GT_SetGadgetAttrs( ICRGadgets[ L6Zero ], ICRWnd, NULL,
  741.                       GTCB_Checked, FALSE, TAG_DONE
  742.                     );
  743.    
  744.    LineValues[5] = 3;
  745.  
  746.    return( TRUE );   
  747. }
  748.  
  749. PRIVATE int ResetBtClicked( void )
  750. {
  751.    int i;
  752.    
  753.    GT_SetGadgetAttrs( ICRGadgets[ L1Zero ], ICRWnd, NULL,
  754.                       GTCB_Checked, FALSE, TAG_DONE
  755.                     );
  756.  
  757.    GT_SetGadgetAttrs( ICRGadgets[ L1One ], ICRWnd, NULL,
  758.                       GTCB_Checked, FALSE, TAG_DONE
  759.                     );
  760.  
  761.    GT_SetGadgetAttrs( ICRGadgets[ L1Two ], ICRWnd, NULL,
  762.                       GTCB_Checked, FALSE, TAG_DONE
  763.                     );
  764.  
  765.    GT_SetGadgetAttrs( ICRGadgets[ L1Three ], ICRWnd, NULL,
  766.                       GTCB_Checked, FALSE, TAG_DONE
  767.                     );
  768.    
  769.    GT_SetGadgetAttrs( ICRGadgets[ L2Zero ], ICRWnd, NULL,
  770.                       GTCB_Checked, FALSE, TAG_DONE
  771.                     );
  772.  
  773.    GT_SetGadgetAttrs( ICRGadgets[ L2One ], ICRWnd, NULL,
  774.                       GTCB_Checked, FALSE, TAG_DONE
  775.                     );
  776.  
  777.    GT_SetGadgetAttrs( ICRGadgets[ L2Two ], ICRWnd, NULL,
  778.                       GTCB_Checked, FALSE, TAG_DONE
  779.                     );
  780.  
  781.    GT_SetGadgetAttrs( ICRGadgets[ L2Three ], ICRWnd, NULL,
  782.                       GTCB_Checked, FALSE, TAG_DONE
  783.                     );
  784.    
  785.    GT_SetGadgetAttrs( ICRGadgets[ L3Zero ], ICRWnd, NULL,
  786.                       GTCB_Checked, FALSE, TAG_DONE
  787.                     );
  788.  
  789.    GT_SetGadgetAttrs( ICRGadgets[ L3One ], ICRWnd, NULL,
  790.                       GTCB_Checked, FALSE, TAG_DONE
  791.                     );
  792.  
  793.    GT_SetGadgetAttrs( ICRGadgets[ L3Two ], ICRWnd, NULL,
  794.                       GTCB_Checked, FALSE, TAG_DONE
  795.                     );
  796.  
  797.    GT_SetGadgetAttrs( ICRGadgets[ L3Three ], ICRWnd, NULL,
  798.                       GTCB_Checked, FALSE, TAG_DONE
  799.                     );
  800.    
  801.    GT_SetGadgetAttrs( ICRGadgets[ L4Zero ], ICRWnd, NULL,
  802.                       GTCB_Checked, FALSE, TAG_DONE
  803.                     );
  804.  
  805.    GT_SetGadgetAttrs( ICRGadgets[ L4One ], ICRWnd, NULL,
  806.                       GTCB_Checked, FALSE, TAG_DONE
  807.                     );
  808.  
  809.    GT_SetGadgetAttrs( ICRGadgets[ L4Two ], ICRWnd, NULL,
  810.                       GTCB_Checked, FALSE, TAG_DONE
  811.                     );
  812.  
  813.    GT_SetGadgetAttrs( ICRGadgets[ L4Three ], ICRWnd, NULL,
  814.                       GTCB_Checked, FALSE, TAG_DONE
  815.                     );
  816.    
  817.    GT_SetGadgetAttrs( ICRGadgets[ L5Zero ], ICRWnd, NULL,
  818.                       GTCB_Checked, FALSE, TAG_DONE
  819.                     );
  820.  
  821.    GT_SetGadgetAttrs( ICRGadgets[ L5One ], ICRWnd, NULL,
  822.                       GTCB_Checked, FALSE, TAG_DONE
  823.                     );
  824.  
  825.    GT_SetGadgetAttrs( ICRGadgets[ L5Two ], ICRWnd, NULL,
  826.                       GTCB_Checked, FALSE, TAG_DONE
  827.                     );
  828.  
  829.    GT_SetGadgetAttrs( ICRGadgets[ L5Three ], ICRWnd, NULL,
  830.                       GTCB_Checked, FALSE, TAG_DONE
  831.                     );
  832.    
  833.    GT_SetGadgetAttrs( ICRGadgets[ L6Zero ], ICRWnd, NULL,
  834.                       GTCB_Checked, FALSE, TAG_DONE
  835.                     );
  836.  
  837.    GT_SetGadgetAttrs( ICRGadgets[ L6One ], ICRWnd, NULL,
  838.                       GTCB_Checked, FALSE, TAG_DONE
  839.                     );
  840.  
  841.    GT_SetGadgetAttrs( ICRGadgets[ L6Two ], ICRWnd, NULL,
  842.                       GTCB_Checked, FALSE, TAG_DONE
  843.                     );
  844.  
  845.    GT_SetGadgetAttrs( ICRGadgets[ L6Three ], ICRWnd, NULL,
  846.                       GTCB_Checked, FALSE, TAG_DONE
  847.                     );
  848.    
  849.    for (i = 0; i < 6; i++)
  850.       LineValues[i] = 0;
  851.       
  852.    return( TRUE );
  853. }
  854.  
  855. // --------------------------------------------------------------------
  856.  
  857. PRIVATE void ICRRender( void )
  858. {
  859.    struct IntuiText   it;
  860.    UWORD         cnt;
  861.  
  862.    ComputeFont( Scr, Font, &CFont, ICRWidth, ICRHeight );
  863.  
  864.    DrawBevelBox( ICRWnd->RPort, CFont.OffX + ComputeX( CFont.FontX, 16 ),
  865.                  CFont.OffY + ComputeY( CFont.FontY, 24 ),
  866.                  ComputeX( CFont.FontX, 193 ),
  867.                  ComputeY( CFont.FontY, 45 ),
  868.                  GT_VisualInfo, VisualInfo, TAG_DONE
  869.                );
  870.  
  871.    DrawBevelBox( ICRWnd->RPort, CFont.OffX + ComputeX( CFont.FontX, 16 ),
  872.                  CFont.OffY + ComputeY( CFont.FontY, 70 ),
  873.                  ComputeX( CFont.FontX, 193 ),
  874.                  ComputeY( CFont.FontY, 45 ),
  875.                  GT_VisualInfo, VisualInfo, TAG_DONE
  876.                );
  877.  
  878.    DrawBevelBox( ICRWnd->RPort, CFont.OffX + ComputeX( CFont.FontX, 16 ),
  879.                  CFont.OffY + ComputeY( CFont.FontY, 218 ),
  880.                  ComputeX( CFont.FontX, 193 ),
  881.                  ComputeY( CFont.FontY, 45 ),
  882.                  GT_VisualInfo, VisualInfo, TAG_DONE 
  883.                );
  884.  
  885.    DrawBevelBox( ICRWnd->RPort, CFont.OffX + ComputeX( CFont.FontX, 16 ),
  886.                  CFont.OffY + ComputeY( CFont.FontY, 267 ),
  887.                  ComputeX( CFont.FontX, 193 ),
  888.                  ComputeY( CFont.FontY, 45 ),
  889.                  GT_VisualInfo, VisualInfo, TAG_DONE 
  890.                );
  891.  
  892.    DrawBevelBox( ICRWnd->RPort, CFont.OffX + ComputeX( CFont.FontX, 16 ),
  893.                  CFont.OffY + ComputeY( CFont.FontY, 118 ),
  894.                  ComputeX( CFont.FontX, 193 ),
  895.                  ComputeY( CFont.FontY, 45 ),
  896.                  GT_VisualInfo, VisualInfo, TAG_DONE 
  897.                );
  898.  
  899.    DrawBevelBox( ICRWnd->RPort, CFont.OffX + ComputeX( CFont.FontX, 16 ),
  900.                  CFont.OffY + ComputeY( CFont.FontY, 168 ),
  901.                  ComputeX( CFont.FontX, 193 ),
  902.                  ComputeY( CFont.FontY, 45 ),
  903.                  GT_VisualInfo, VisualInfo, TAG_DONE 
  904.                );
  905.  
  906.    for (cnt = 0; cnt < ICR_TNUM; cnt++) 
  907.       {
  908.       CopyMem( (char *) &ICRIText[ cnt ], (char *) &it, 
  909.                (long) sizeof( struct IntuiText )
  910.              );
  911.       
  912.       it.ITextFont = Font;
  913.       
  914.       it.LeftEdge  = CFont.OffX + ComputeX( CFont.FontX, it.LeftEdge ) 
  915.                      - (IntuiTextLength( &it ) >> 1);
  916.       
  917.       it.TopEdge   = CFont.OffY + ComputeY( CFont.FontY, it.TopEdge ) 
  918.                      - (Font->ta_YSize >> 1);
  919.       
  920.       PrintIText( ICRWnd->RPort, &it, 0, 0 );
  921.       }
  922. }
  923.  
  924. PRIVATE int OpenICRWindow( void )
  925. {
  926.    struct NewGadget  ng;
  927.    struct Gadget    *g;
  928.    UWORD             lc, tc;
  929.    UWORD             wleft = ICRLeft, wtop = ICRTop, ww, wh;
  930.  
  931.    ComputeFont( Scr, Font, &CFont, ICRWidth, ICRHeight );
  932.  
  933.    ww = ComputeX( CFont.FontX, ICRWidth );
  934.    wh = ComputeY( CFont.FontY, ICRHeight );
  935.  
  936.    if ((wleft + ww + CFont.OffX + Scr->WBorRight) > Scr->Width) 
  937.       wleft = Scr->Width - ww;
  938.    
  939.    if ((wtop + wh + CFont.OffY + Scr->WBorBottom) > Scr->Height) 
  940.       wtop = Scr->Height - wh;
  941.  
  942.    if ((ICRFont = OpenDiskFont( Font )) == NULL)
  943.       return( -5 );
  944.  
  945.    if ((g = CreateContext( &ICRGList )) == NULL)
  946.       return( -1 );
  947.  
  948.    for (lc = 0, tc = 0; lc < ICR_CNT; lc++) 
  949.       {
  950.       CopyMem( (char *) &ICRNGad[ lc ], (char *) &ng, 
  951.                (long) sizeof( struct NewGadget )
  952.              );
  953.  
  954.       ng.ng_VisualInfo = VisualInfo;
  955.       ng.ng_TextAttr   = Font;
  956.  
  957.       ng.ng_LeftEdge   = CFont.OffX + ComputeX( CFont.FontX,
  958.                                                 ng.ng_LeftEdge
  959.                                               );
  960.  
  961.       ng.ng_TopEdge    = CFont.OffY + ComputeY( CFont.FontY, 
  962.                                                 ng.ng_TopEdge
  963.                                               );
  964.  
  965.       ng.ng_Width      = ComputeX( CFont.FontX, ng.ng_Width );
  966.       ng.ng_Height     = ComputeY( CFont.FontY, ng.ng_Height);
  967.  
  968.       ICRGadgets[ lc ] = g 
  969.                        = CreateGadgetA( (ULONG) ICRGTypes[ lc ], 
  970.                                         g, 
  971.                                         &ng, 
  972.                                         (struct TagItem *)&ICRGTags[ tc ] 
  973.                                       );
  974.  
  975.       while (ICRGTags[ tc ] != TAG_DONE) 
  976.          tc += 2;
  977.  
  978.       tc++;
  979.  
  980.       if (g == NULL)
  981.          return( -2 );
  982.       }
  983.  
  984.    if ((ICRWnd = OpenWindowTags( NULL,
  985.    
  986.             WA_Left,      wleft,
  987.             WA_Top,       wtop,
  988.             WA_Width,     ww + CFont.OffX + Scr->WBorRight,
  989.             WA_Height,    wh + CFont.OffY + Scr->WBorBottom,
  990.  
  991.             WA_IDCMP,     CHECKBOXIDCMP | BUTTONIDCMP | IDCMP_GADGETDOWN
  992.               | IDCMP_VANILLAKEY | IDCMP_REFRESHWINDOW,
  993.  
  994.             WA_Flags,     WFLG_DRAGBAR | WFLG_DEPTHGADGET 
  995.               | WFLG_SMART_REFRESH | WFLG_ACTIVATE,
  996.  
  997.             WA_Gadgets,   ICRGList,
  998.             WA_Title,     ICRWdt,
  999.             WA_MinWidth,  260,
  1000.             WA_MinHeight, 20,
  1001.             WA_MaxWidth,  640,
  1002.             WA_MaxHeight, 480,
  1003.             WA_CustomScreen, Scr,
  1004.  
  1005.             TAG_DONE )
  1006.       ) == NULL)
  1007.       return( -4 );
  1008.  
  1009.    GT_RefreshWindow( ICRWnd, NULL );
  1010.  
  1011.    ICRRender();
  1012.  
  1013.    return( 0 );
  1014. }
  1015.  
  1016. PRIVATE int ICRVanillaKey( int whichkey )
  1017. {
  1018.    int rval = TRUE;
  1019.    
  1020.    switch (whichkey)
  1021.       {
  1022.       case 'd':
  1023.       case 'D':
  1024.          rval = DoneBtClicked();
  1025.          break;
  1026.          
  1027.       case 'r':
  1028.       case 'R':
  1029.          rval = ResetBtClicked();
  1030.          break;
  1031.       }
  1032.       
  1033.    return( rval );
  1034. }
  1035.  
  1036.  
  1037. PRIVATE int HandleICRIDCMP( void )
  1038. {
  1039.    struct IntuiMessage *m;
  1040.    int                (*func)( void );
  1041.    BOOL                 running = TRUE;
  1042.  
  1043.    while (running == TRUE)
  1044.       {
  1045.       if ((m = GT_GetIMsg( ICRWnd->UserPort )) == NULL) 
  1046.          {
  1047.          (void) Wait( 1L << ICRWnd->UserPort->mp_SigBit );
  1048.          continue;
  1049.          }
  1050.  
  1051.       CopyMem( (char *) m, (char *) &ICRMsg, 
  1052.                (long) sizeof( struct IntuiMessage )
  1053.              );
  1054.  
  1055.       GT_ReplyIMsg( m );
  1056.  
  1057.       switch (ICRMsg.Class) 
  1058.          {
  1059.          case   IDCMP_REFRESHWINDOW:
  1060.             GT_BeginRefresh( ICRWnd );
  1061.             ICRRender();
  1062.             GT_EndRefresh( ICRWnd, TRUE );
  1063.             break;
  1064.  
  1065.          case   IDCMP_VANILLAKEY:
  1066.             running = ICRVanillaKey( ICRMsg.Code );
  1067.             break;
  1068.  
  1069.          case   IDCMP_GADGETUP:
  1070.          case   IDCMP_GADGETDOWN:
  1071.             func = (void *) ((struct Gadget *) ICRMsg.IAddress)->UserData;
  1072.  
  1073.             if (func != NULL)
  1074.                running = func();
  1075.    
  1076.             break;
  1077.          }
  1078.       }
  1079.  
  1080.    return( running );
  1081. }
  1082.  
  1083. PUBLIC int HandleICReq( int linetype1[], int linetype2[] )
  1084. {
  1085.    if (OpenICRWindow() < 0)
  1086.       return( FALSE );
  1087.       
  1088.    (void) HandleICRIDCMP();
  1089.    
  1090.    return( TRUE );
  1091. }
  1092.  
  1093. /* ------------------ END of IChingReq.c file! -------------------- */
  1094.